//
// var bird = {
//     name: "鸟",
//     fly: function () {
//         console.log(this.name + "会飞")
//     }
// };
//
// bird.fly.call();//call() apply()  默认参数this 指向全局
//
// var pig = {
//     name: "猪"
// };
// //借用函数
// bird.fly.call(pig)//cal() appply()  第一个参数是改变后 this的指向
//
// function test() {
//     //借用数组中的Join
//     console.log(arguments)//arguments 函数一旦创建就存在  是该函数所有参数的集合 （类数组）
//     console.log(Array.prototype.join.call(arguments,'-' ))
//     // arr.join()
// }
// test(1, 3, 4444, 5)

//
// var bird = {
//     name: "鸟",
//     fly: function () {
//         // console.log(this.name + "会飞", Array.prototype.join.call(arguments, '-'))
//         console.log(this.name + "会飞", Array.prototype.join.apply(arguments, ['-']))
//
//     }
// }
//
// var pig = {
//     name: "猪",
//     wantFly() {
//         bird.fly.apply(pig, arguments)// bird.fly(arguments)
//     }
// }
// bird.fly(pig, 1, 2)
// bird.fly.call(pig, 1, 2)
// pig.wantFly(3,4)
// // //call(obj,参数1,参数2)
// // //apply(obj,[参数数组])
// pig.wantFly(1, 233, 4, 233, 4, 233, 4, 233, 4, 233, 4, 6, 7)
//
//
//
var bird = {
    name: "鸟",
    fly: function () {
        console.log(this.name + "会飞", Array.prototype.join.call(arguments, '-'))
    }
}

var pig = {
    name: "猪"
}

//手动调用，替换this
var fly = bird.fly.bind(pig)//bind()方法创建一个新的函数 在bind（）被调用时 这个新的函数的this 被bind第一个参数指定

fly()
